Chod hore
Predchádzajúca stránka Nasledujúca stránka Začiatok kapitoly Koniec kapitoly Začiatok kurzu Koniec kurzu


10.7 Príprava ponuky


Ponuka - je umožnenie užívateľovi vybrať z konkrétnych možností a čakanie na jeho voľbu. Možnosť výberu ponúkame do tej doby, kým užívateľ sa nerozhodne ukončiť výber a vrátiť sa k vykonávaniu určitej časti alebo k jeho ukončeniu. Slovný popis algoritmu tvorby ponuky (ponuka je typický príklad vzadu testovaného cyklu):

Obr10_18

Musíme zabezpečiť, aby informácie boli jasné a jednoznačné. Užívateľovi musí byť jasné, že má voliť a z čoho má voliť (aké má možnosti). Ak potrebné informácie sa nachádzali na obrazovke už aj predtým, potom doporučuje sa kurzor umiestniť na dané miesto na obrazovke.
Uvedieme algoritmus všeobecného prípadu:

Obr10_19

Zdrojový program uvedieme pre konkrétnejší prípad:

Obr10_20



10.8 Vyhľadávanie


V týchto úlohách hľadáme prvok s danými vlastnosťami. Algoritmus by mal určiť, či existuje taký prvok a ak je, potom ktorý je v poradí (počítame od 1). Všeobecný algoritmus pre N prvkov:

Obr10_21

pre neznámy počet prvkov (napríklad pri načítaní do koncového znaku):

Obr10_22

ak je "nekonečne" veľa Prvkov a hľadáme do tej doby, kým nenájdeme Prvok s danou vlastnosťou, potom

Obr10_23


Spresnenie, zoznam podmienok, zoznam činností

Vo všeobecnosti nedokážeme v Jacksonovom diagrame uviesť všetky podmienky a znázorniť všetky činnosti, resp. uviesť ich v plnom znení. Ani nie je to nutné, lebo príliš veľa informácií pôsobí rušivo a náš diagram sa v takom prípade stáva neprehľadným. V takýchto prípadoch danú podmienku alebo činnosť označíme číslom alebo podčiarkneme a spresňujeme na inom mieste. Spresnenie sa robí pomocou pripojeného zoznamu podmienok, zoznamu činností alebo na zvláštneho Jacksonového diagramu. Pravidlá:

  • Pripojený zoznam podmienok resp. činností môže obsahovať:
    • logický výraz (podmienku), resp. Pascalovský príkaz;
    • krátky, jasný popis;
    • poznámku;
    • alebo odkaz na zvlášť zadaný Jacksonov diagram.

  • Daný zoznam môže patriť aj k viacerým Jacksonovým diagramom, len je nutné aby spolupatričnosť bola jednoznačná.
  • Číslovanie: Očíslované podmienky, resp. činnosti musia figurovať v zozname.
    • Číslovanie podmienok: F1, F2, F3, ... (ľubovolné kladné celé číslo začínajúce sa na písmeno F).
    • Číslovanie činností: 1, 2, 3, ... (ľubovolné kladné celé číslo).
      Číslovane nemusí byť nutne súvislé. Dokonca môžeme vynechávať čísla.

  • Podčiarkovanie: Podčiarkovanie označuje spresnenie. Miesto spresnenia:
    • v prvom rade pripojený zoznam podmienok, resp. zoznam činností;
    • v druhom rade zvláštny Jacksonov diagram.

  • Aj v zozname môže byť podčiarkovanie. Toto znamená ďalší odkaz, v prvom rade na inú podmienku alebo činnosť, a v druhom rade na ďalší Jacksonov diagram.

Pri spresnení musíme dávať pozor na nasledujúce:
  • Podmienky a činnosti uvedené v Jacksonovom diagrame pomocou čísel, podčiarknutia alebo priamo napísané - môžeme "miešať", ale musíme dávať pozor na to, aby boli logické a dali sa ľahko sledovať!
  • V prípade známych algoritmov stačí sa odvolať na daný algoritmus, ale musíme určiť presne čo bude robiť a s ktorými údajmi.


Homogenizácia

Všeobecné pravidlo v Jacksonových diagramoch je to, že pod jednou krabičkou (jeho spresnenie) môžu byť iba sekvencie, alebo selekcie, alebo iba jedná krabička(!) s hviezdičkou (iterácia). Toto pravidlo môžeme narušiť iba nakreslením podstatne menších krabičiek a ich umiestnením trochu vyššie vpravo alebo vľavo od základných prvkov algoritmu. Musíme dodržať nasledujúce:

  • Doplnkové krabičky nesmú byť selekcie (krúžok) alebo iterácie (hviezdička);
  • Nevkladáme doplnkové krabičky medzi prvky selekcie.

Doplnkových krabičiek sa môžeme zbaviť vložením ďalšej úrovne do Jacksonovho diagramu. Táto činnosť sa nazýva homogenizáciou. Homogenizovať zvykneme ak:
  • je príliš veľa nehomogenizovaných činností, alebo
  • prehľadnosť algoritmu sa od toho zlepší.



10.9 Určenie minima a maxima

Určiť minimum resp. maximum znamená porovnať prvky postupnosti údajov a zapamätať minimálne resp. maximálne z nich. Musíme dávať veľký pozor, aby počiatočná hodnota bola vhodná. V prípade hľadania minima - dostatočne veľká a v prípade hľadania maxima - dostatočne malá. Najvhodnejšie je zobrať za počiatočnú hodnotu prvý prvok postupnosti údajov.
Algoritmus pre známy počet (N) prvkov:

Obr10_24

V nasledujúcom prípade nevieme vopred koľko prvkov budeme mať, ale budeme predpokladať, že hodnoty prvkov sú kladné a menšie než $FFFF. Potom koncovým znakom môžu byť 0, počiatočnou hodnotou pre hľadanie minima - číslo $FFFF a 0 pre hľadanie maxima. Prípad, keď neboli načítané žiadne hodnoty, musíme spracovať zvlášť - v tomto prípade sa nebudú vykonávať žiadne porovnávania.

Obr10_25

V prípade viacerých vstupných hodnôt pri vopred neznámom počte prvkov (načítanie do koncového znaku) teoreticky môžeme vstup údajov riešiť dvoma spôsobmi:

  • vždy pred načítaním skupiny hodnôt zistíme, čí ešte máme čo načítať. V tomto prípade užívateľ bude musieť odpovedať na otázku čí sú ďalšie hodnoty.
  • prvá hodnota zo vstupnej skupiny bude testovaná na koncový znak. V tomto prípade musíme zabezpečiť aby užívateľ nemusel zadávať po načítaní koncového znaku zbytočne ostatné hodnoty skupiny, ktoré aj tak sa nebudú používať.